// create-markdown.js
import fs from 'node:fs';
import path from 'node:path';

// 定义模板内容
const markdownTemplate = `---
author: 文永达
pubDatetime: PLACEHOLDER_PUB_DATETIME
title: YYYY.MM.DD
featured: false
ogImage: https://github.com/satnaing/astro-paper/assets/53733092/1ef0cf03-8137-4d67-ac81-84a032119e3a
tags:
  - "YYYY.MM"
description: "我的日记"
---

# YYYY-MM-DD

## 上午

## 下午
`;

let time;

function getLocalDateTimeISOString() {
    const now = new Date();
    // 获取时区偏移量（分钟），例如，UTC+8 会是 -480
    const offset = now.getTimezoneOffset();
    // 将当前时间转换为本地时间毫秒，并加上偏移量以得到 UTC 毫秒数
    // 但这里我们希望的是本地时间对应 UTC 的形式，所以直接用 now 就可以
    // 然后将本地时间的各个部分提取出来

    const year = now.getFullYear();
    const month = (now.getMonth() + 1).toString().padStart(2, '0');
    const day = now.getDate().toString().padStart(2, '0');
    const hours = now.getHours().toString().padStart(2, '0');
    const minutes = now.getMinutes().toString().padStart(2, '0');
    const seconds = now.getSeconds().toString().padStart(2, '0');
    const milliseconds = now.getMilliseconds().toString().padStart(3, '0');

    // 构造 ISO 格式字符串，不带 'Z' 结尾（'Z' 表示 UTC），或者带上本地时区偏移
    // 这种方式更符合你原来的需求，只是基于本地时间
    const localIsoString = `${year}-${month}-${day}T${hours}:${minutes}:${seconds}.${milliseconds}`;

    // 如果你还需要时区偏移，可以这样计算并添加 (例如 +08:00)
    // const timezoneOffsetMs = now.getTimezoneOffset() * 60 * 1000; // 转换为毫秒
    const sign = offset > 0 ? '-' : '+';
    const absOffset = Math.abs(offset);
    const offsetHours = Math.floor(absOffset / 60).toString().padStart(2, '0');
    const offsetMinutes = (absOffset % 60).toString().padStart(2, '0');
    const timezoneOffsetString = `${sign}${offsetHours}:${offsetMinutes}`;
    time = `T${hours}:${minutes}:${seconds}.${milliseconds}${timezoneOffsetString}`
    return `${localIsoString}${timezoneOffsetString}`;
}


function createMarkdownFile(fileName = getLocalDateTimeISOString().slice(0, 10), dir = 'src/data/blog/daily') {
    if (!time) {
        getLocalDateTimeISOString()
    }
    const fullPath = path.join(process.cwd(), `${dir}\\${fileName.slice(0, 7)}`, `${fileName}.md`); // 假设是 .md，如果你用 MDX 可以改为 .mdx

    fs.mkdirSync(path.dirname(fullPath), { recursive: true }); // 确保目录存在
    let content = markdownTemplate;
    content = content.replace('YYYY-MM-DD', fileName);

    content = content.replace('PLACEHOLDER_PUB_DATETIME', `${fileName}${time}`);
    content = content.replace('YYYY.MM.DD', fileName.replace(/-/g, '.'));

    content = content.replace('YYYY.MM', fileName.slice(0, 7).replace(/-/g, '.'));
    fs.writeFileSync(fullPath, content);
    process.stdout.write(`Markdown 文件已在 ${fullPath} 创建成功！`);
}

// // 从命令行参数获取文件名
const args = process.argv.slice(2);
if (args.length === 0) {
    // console.error('请提供一个文件名作为参数。例如：node create-markdown.js my-new-post');
    // process.exit(1);
    createMarkdownFile();
} else {
    createMarkdownFile(args[0]);
}

// createMarkdownFile(args[0]);
